package com.ddwl.schema.vo.wallet;

import com.ddwl.schema.vo.goods.ItemVo;
import com.ddwl.schema.vo.shop.ShopVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.Instant;
import java.util.List;
import java.util.Set;

/**
 * 优惠券
 *
 * @author Fu Zhaohui
 * @version 1.0.0
 * @date 2019/8/8 11:00
 */
@ApiModel(description = "优惠券Vo")
@Setter
@Getter
public class CouponVo {

    @ApiModelProperty("主键")
    private String id;
    @ApiModelProperty("券名称")
    private String name;
    @ApiModelProperty(value = "店铺id")
    private Set<String> shopIds;
    @ApiModelProperty(value = "适用哪一类商品")
    private String categoryId;
    @ApiModelProperty(value = "兑换商品id")
    private String itemId;
    @ApiModelProperty("适用店铺")
    private List<ShopVo> shops;
    @ApiModelProperty("适用商品")
    private ItemVo item;
    @ApiModelProperty("类型 0、一次性抵扣券,1、销售抵扣券,2、商品兑换券")
    private Integer type;
    @ApiModelProperty("券封面")
    private String coverImg;
    @ApiModelProperty("销售价格")
    private BigDecimal price;
    @ApiModelProperty("券金额（可抵扣金额）")
    private BigDecimal amount;
    @ApiModelProperty("使用最低金额")
    private BigDecimal minAmount;
    @ApiModelProperty("折扣券折扣")
    private Float discount;
    @ApiModelProperty("开始时间")
    private Instant beginDate;
    @ApiModelProperty("结束时间")
    private Instant endDate;
    @ApiModelProperty("单个人最大领取数量")
    private Integer singleMax;
    @ApiModelProperty("发放总数量")
    private Integer quantity;
    @ApiModelProperty("有效天数")
    private Integer validDays;
    @ApiModelProperty("使用须知")
    private List<NoteVo> useNotes;
    @ApiModelProperty("可使用周天数")
    private Integer[] weeks;
    @ApiModelProperty("券说明")
    private String introduce;
    @ApiModelProperty("批次唯一标识服务")
    private String batchNo;
    @ApiModelProperty("券状态")
    private Integer enable;
    @ApiModelProperty("创建时间")
    private Instant gmtCreated;
    @ApiModelProperty("修改时间")
    private Instant gmtModified;
}
